home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / tools / cd2pcmt / source.lzh / CDC_CLIB.H < prev    next >
Text File  |  1996-09-16  |  21KB  |  812 lines

  1. int    CDC_CHK();
  2. /*
  3.     *-----------------------------------------------------------------
  4.     *
  5.     *    int CDC_CHK();
  6.     *
  7.     *    ・ドライバーの常駐チェック
  8.     *
  9.     *    [引  数]    なし
  10.     *    [戻り値]    -1 ; 常駐している
  11.     *             0 ; していない
  12. */
  13. int    CDC_CALL();
  14.  
  15. #define    CDC_VERSION()        CDC_CALL(0x00)
  16. /*
  17.     *-----------------------------------------------------------------
  18.     *
  19.     *    int CDC_VERSION();
  20.     *
  21.     *    ・ドライバーのバージョンチェック
  22.     *
  23.     *    [引  数]    なし
  24.     *    [戻り値]    CDC CALLバージョン。例えば 1.10なら 0x0110。
  25.     *
  26. */
  27.  
  28. #define    CDC_INIT()        CDC_CALL(0x01)
  29. /*
  30.     *-----------------------------------------------------------------
  31.     *
  32.     *    void CDC_INIT();
  33.     *
  34.     *    ・CD 及び ドライバーの初期化をする ([CLR]キー同等)
  35.     *
  36.     *    [引  数]    なし
  37.     *    [戻り値]    なし
  38.     *
  39.     *     演奏中止し、モードもクリアします。ただし、プログラムは残
  40.     *    ります。
  41.     *
  42.     *    [参  考] CD-ROM に対し REZEROUNIT を送りますので多少時間の
  43.     *        かかる場合があります。割り込み中など処理を早くした
  44.     *        い場合、_CDC_STOP を使用するといいでしょう。
  45.     *
  46. */
  47.  
  48. #define    CDC_STAT()        (struct CDC_STAT_PTR *)CDC_CALL(0x02)
  49. /*
  50.     *-----------------------------------------------------------------
  51.     *
  52.     *    struct CDC_STAT_PTR *CDC_STAT();
  53.     *
  54.     *    ・CDの現在の状態の書かれたアドレスを返す
  55.     *
  56.     *    [引  数]    なし
  57.     *    [戻り値]    ワークアドレス(struct CDC_STAT_PTR)
  58.     *
  59. */
  60. struct CDC_STAT_PTR {
  61.     short    CDIN;        //    0;NoCD 1;SetCD
  62.     int    PLAYINF;    //    状態  0x11;演奏中,0x12;一時停止,0x13;停止
  63.     int    TRAKNO;        //    曲番号
  64.     int    PLAYTIME;    //    演奏中の曲の経過時間 (MSF型)
  65.     int    CDLONG;        //    CD絶対総 経過時間 (MSF型)
  66.     int    TRAKLONG;    //    現在演奏曲のながさ (MSF型)
  67.     void*    CDNAME;        //    CD名アドレス
  68.     void*    TRAKNAME;    //    曲名アドレス
  69.     void*    LEDSTR;        //    LED文字アドレス    -----以下LED部に表示される物
  70.     int    LEDTRAK;    //    LED数値 曲番号
  71.     int    LEDNO;        //    LED数値 1以上;プログラムナンバー
  72.                 //        0;表示無し -1;MAX= -2;INP= -3;Vol
  73.     int    LEDTIME;    //    LED数値 タイム (MSF型)
  74.     int    LEDSTAT;    //    LEDの状態
  75.                 //        ┌bit 0 ■:停止
  76.                 //        │bit 1 >:再生
  77.                 //        │bit 2 ||:一時停止
  78.                 //       イズレカ│bit 3 >>:早送り
  79.                 //        └bit 4 <<:巻き戻し
  80.                 //        ┌bit 5 ⊂:オート
  81.                 //        └bit 6 ◯:リピート
  82.                 //          bit 7 R:ランダム
  83.                 //          bit 8 P:メモリー
  84.                 //         (bit 9 B:BGM)
  85.     char    INKEYNUMH;    //    入力されている数値(上)
  86.     char    INKEYNUML;    //    入力されている数値(下)
  87.     short    LEDTIMEMODE;    //    LED数値 タイム のモード
  88.                 //        0;ノーマル
  89.                 //        1;リバース
  90.                 //        2;トータル
  91.                 //        3;トータルリバース
  92.     short    VOLUME;        //    Vol数値
  93.     short    MASTERVOL;    //    MasterVol数値(0ならボリューム機能無し)
  94. };
  95. /*
  96.     *    捕捉
  97.     *
  98.     *        表示 LED 文字アドレスは基本的に同じアドレスを返し
  99.     *        ます。内容が変わったかどうかは曲名アドレスを監視す
  100.     *        ることで可能です。
  101.     *
  102.     *     CDの現在の状態の書かれたアドレスを返します。アドレスは
  103.     *    固定されてますが、内容はトラップ時にのみ更新されるものもあ
  104.     *    ります。
  105.     *
  106.     *    [参 考] CDC.x の機能が停止ているばあい同じ値を返します。
  107.     *        ( LED 文字アドレスも0の時もあります。)
  108.     *        CDC_POWER() でチェックしてください。
  109.     *
  110. */
  111.  
  112. #define    CDC_TRACKS()        (struct CDC_TRACKS_PTR *)CDC_CALL(0x03)
  113. /*
  114.     *-----------------------------------------------------------------
  115.     *
  116.     *    struct CDC_TRACKS_PTR *CDC_TRACKS();
  117.     *
  118.     *    ・CD-DA のCDの総合時間、曲数、曲の演奏時間、曲名の書かれ
  119.     *     たアドレスを返す
  120.     *
  121.     *    [引  数]    なし
  122.     *    [戻り値]    曲名リストワークアドレス
  123.     *
  124.     *     CD名、曲名以外の書き替えは禁止です。名前は変更可能です。
  125.     *
  126. */
  127. struct CDC_TRACKS_PTR {
  128.     short    CDIN;        //    0;NoCD 1;SetCD
  129.     int    CDCWORKS;    //    CDC.xの最大記憶数(以下,記憶数)
  130.     int    CDCTRAK;    //    CDの曲数
  131.     int    CDLONG;        //    CDの全演奏時間 (MSF型)
  132.     int    CDLISTFG;    //    CDCLISTにあったか -1ならあった
  133.     char    CDNAME[40];    //    CD名        40-1文字
  134.     char    WORKS[0];    //
  135.             //    .dsb.b    (記憶数)*40    各曲の名前    40-1文字
  136.             //    .dsb.l    (記憶数)    各曲の演奏時間+拡張曲名flag
  137.             //    .dsb.l    (記憶数)    各曲のスタート時間
  138.             //                (↑最上位ビットが立っ
  139.             //                ていれば データトラック)
  140. };
  141.  
  142. struct CDC_ATRACK_PTR *CDC_ATRACK(int TN);
  143. /*
  144.     *-----------------------------------------------------------------
  145.     *
  146.     *    struct CDC_ATRACK_PTR *CDC_ATRACK( int TN )
  147.     *
  148.     *    ・一つのトラックの演奏時間、曲名の書かれたアドレスを返す
  149.     *
  150.     *    [引  数]    TN = トラックナンバー 1~
  151.     *    [戻り値]    ワークアドレス
  152.     *
  153.     *     ワーク内書き替えても意味がありません
  154.     *
  155. */
  156. struct    CDC_ATRACK_PTR {
  157.     char    *NAME;        //    各曲の名前    最大 39 文字
  158.     int    LONG;        //    各曲の演奏時間+拡張曲名flag
  159.     int    START;        //    各曲のスタート時間
  160.                 //        (↑最上位ビットが立っ
  161.                 //        ていれば データトラック)
  162. };
  163.  
  164.  
  165. #define    CDC_SCSI_CHK()    CDC_CALL(0x04)
  166. /*
  167.     *-----------------------------------------------------------------
  168.     *
  169.     *    int CDC_SCSI_CHK();
  170.     *
  171.     *    ・SCSI の状態を返す
  172.     *
  173.     *    [引  数]    なし
  174.     *    [戻り値]           0 ; 使用可能
  175.     *            マイナス ; 使用不可
  176.     *
  177.     *     割り込みでCDC をアクセスする時のみ使用します。
  178.     *     TRAP #5 で SCSI を使用するものの場合このコールでチェック
  179.     *    してから使用してください。
  180.     *
  181. */
  182.  
  183. #define    CDC_RELED()        CDC_CALL(0x05)
  184. /*
  185.     *-----------------------------------------------------------------
  186.     *
  187.     *    void CDC_RELED();
  188.     *
  189.     *    ・LED 部の書き直し、CD-ROM の状態を再チェック
  190.     *
  191.     *    [引  数]    なし
  192.     *    [戻り値]    なし
  193.     *
  194.     *     LED の書き直しを行います。TRAP #5 で CDC.x を操作した場
  195.     *    合すぐにLED部(_CDC_STAT のワークも含む)に表れないものがあ
  196.     *    ります。TIMER-C が生きている場合一秒(/Tによる)以内には書き
  197.     *    直されますが、このコールを使えばすぐに書き直されます。
  198.     *     TRAP#5を使わず外部で演奏開始等した場合もこのコールを呼べ
  199.     *    ば認識します。
  200.     *     また、入力された数値のキャンセルも行います。
  201.     *
  202.     *    [参 考] CDCコール番号の $1? はすぐに書き直されるようになっ
  203.     *        てます。
  204.     *
  205. */
  206.  
  207. #define    CDC_INKEY(KB)        CDC_CALL(0x07,KB)
  208. /*
  209.     *-----------------------------------------------------------------
  210.     *
  211.     *    void    CDC_INKEY( int KB );
  212.     *
  213.     *    ・CDCのキー割り込みルーチンを呼ぶ
  214.     *
  215.     *    [引  数]    KB = キーボードコード
  216.     *    [戻り値]    なし
  217.     *
  218.     *     キーボードのコードを送ることで CDC をコントロールする
  219.     *
  220.     *┌─┐┌─┐                  ┌─┬─┬─┐┌─┬─┬─┬─┐
  221.     *│  ││  │            ─┬──┐│  │  │  ││  │記│登│  │
  222.     *└─┘└─┘            ─┴──┘└━┴━┴━┘└━┴─┴─┴─┘
  223.     *┌─┬─┬            ─┬──┐┌─┬─┬─┐┌─┬─┬─┬─┐
  224.     *│ES│  │              │ BS ││HM│  │DL││CL│/│*│-│
  225.     *├─┴┬┴  ┬┴┬┴┬     ┬┴┬┴──┤├─┼━┼─┤├─┼─┼─┼─┤
  226.     *│ TAB│    │E│R│     │[゚│    ││RU│RD│UN││7│8│9│+│
  227.     *├──┼    ┴┬┴┬┴     ┴┬┴┐ CR │├─┼─┼─┤├─┼─┼─┼─┤
  228.     *│                  │]ム│    ││  │↑│  ││4│5│6│=│
  229.     *                  ┴┬┴──┤│←├─┤→│├─┼─┼─┼─┤
  230.     *                │    ││  │↓│  ││1│2│3│  │
  231.     *                ┴┬──┘├─┴┬┴─┤├─┼─┼─┤EN│
  232.     *                  │      │    │    ││0│,│.│  │
  233.     *                ━┘      └──┴──┘└─┴─┴─┴─┘
  234.     *
  235.     *┌─┐┌─┐                  ┌─┬─┬─┐┌─┬─┬─┬─┐
  236.     *│  ││  │            ─┬──┐│  │  │  ││  │52│53│  │
  237.     *└─┘└─┘            ─┴──┘└━┴━┴━┘└━┴─┴─┴─┘
  238.     *┌─┬─┬            ─┬──┐┌─┬─┬─┐┌─┬─┬─┬─┐
  239.     *│01│  │              │ 0F ││36│  │37││3F│40│41│42│
  240.     *├─┴┬┴  ┬┴┬┴┬        ┬┴┬┴──┤├─┼━┼─┤├─┼─┼─┼─┤
  241.     *│ 10 │    │13│14│        │1C│    ││38│39│3A││43│44│45│46│
  242.     *├──┼    ┴┬┴┬┴        ┴┬┴┐ 1D │├─┼─┼─┤├─┼─┼─┼─┤
  243.     *│                  │29│    ││  │3C│  ││47│48│49│4A│
  244.     *                  ┴┬┴──┤│3B├─┤3D│├─┼─┼─┼─┤
  245.     *                │    ││  │3E│  ││4B│4C│4D│  │
  246.     *                ┴┬──┘├─┴┬┴─┤├─┼─┼─┤4E│
  247.     *                  │      │    │    ││4F│50│51│  │
  248.     *                ━┘      └──┴──┘└─┴─┴─┴─┘
  249.     *
  250.     *            0x3F        [CLR]    = CDC.x初期化
  251.     *            0x4E        [ENT]    = 演奏
  252.     *            0x4A        [=]    = PAUSE/RESUME
  253.     *            0x3B/0x3D    [←][→]= 巻戻し/早送り
  254.     *            0x38        [R-UP]    = 1曲戻し *
  255.     *            0x39        [R-DN]    = 1曲送り
  256.     *            0x3A        [UNDO]    = リピートモード
  257.     *
  258.     *        などキー操作と同じ。他に
  259.     *
  260.     *            0x52    [記号入力]= 数値入力キャンセル。LEDの初期化にもなる
  261.     *                        (CDC_RELEDと同じ機能です。)
  262.     *
  263.     *        があります(キー操作では出来ないようになってます)。
  264.     *
  265.     *     演奏開始の場合等、他のコールと違うのは入力されている数値
  266.     *    に影響される点です。もしこのコールだけで指定の曲演奏したい
  267.     *    場合、まず、数値キーコードを送ってから演奏すれば可能です。
  268.     *
  269.     *     [←][→](サーチキー)を使う場合は、連続で送ったあと、最後
  270.     *    に 0 を送ってください。この時サーチ先から演奏されます。
  271.     *
  272.     *     0x38は連続でコマンドを送ったりすることで動作が違うので単
  273.     *    純に、曲の頭から、1曲戻すと言う場合 CDC_MVPLAY() を使用し
  274.     *    てください。
  275.     *
  276.     *    [★注意]ver 1.06以前では
  277.     *            0x42/0x46    [-][+]    = 巻戻し/早送り
  278.     *        でした。。
  279.     *
  280. */
  281.  
  282. #define    CDC_PROG()        (struct CDC_PROG_PTR*)CDC_CALL(0x08)
  283. /*
  284.     *-----------------------------------------------------------------
  285.     *
  286.     *    struct CDC_PROG_PTR *CDC_PROG();
  287.     *
  288.     *    ・CDCのプログラムワークアドレスを返す
  289.     *
  290.     *    [引  数]    なし
  291.     *    [戻り値]    d0.l = メモリワークアドレス
  292.     *
  293.     *     プログラムの直接書き替えも可能。ただし、書き替えたあとも
  294.     *    う一度 _CDC_PROG をコールすること。プログラムを全部消去し
  295.     *    たい場合、プログラム数を0に書き替えることで可能。
  296.     *
  297. */
  298. struct    CDC_PROG_PTR
  299. {
  300.     short        PROGLONG;    //    プログラム数
  301.     unsigned char    PROGNUM[256];    //    曲ナンバー
  302. };
  303.  
  304. #define    CDC_PROGIN(NUM,PGN)        CDC_CALL(0x09,NUM,PGN)
  305. /*
  306.     *-----------------------------------------------------------------
  307.     *
  308.     *    int CDC_PROGIN( int NUM , int PGN );
  309.     *
  310.     *    ・指定曲ナンバーをプログラムに記憶する
  311.     *
  312.     *    [引  数]    NUM = 曲ナンバー
  313.     *                = -1 ; 現在プログラムされている数のみ返す
  314.     *            PGN = プログラムナンバー (0~)
  315.     *                = -1 ;プログラムの最後に追加します ([.])
  316.     *    [戻り値]    現在プログラムされている数
  317.     *            マイナスならエラー(プログラム100を越える)
  318.     *
  319. */
  320.  
  321. #define    CDC_PROGOUT()        CDC_CALL(0x0A)
  322. /*
  323.     *-----------------------------------------------------------------
  324.     *
  325.     *    int CDC_PROGOUT();
  326.     *
  327.     *    ・最後のプログラムの曲をプログラムから消す
  328.     *
  329.     *    [引  数]    なし
  330.     *    [戻り値]    現在プログラムされている数
  331.     *            マイナスならエラー
  332.     *
  333. */
  334.  
  335. #define    CDC_PROGTIME()        (int*)CDC_CALL(0x0F)
  336. /*
  337.     *-----------------------------------------------------------------
  338.     *
  339.     *    int CDC_PROGTIME();
  340.     *
  341.     *    ・プログラムされた曲の総演奏時間を計算する
  342.     *
  343.     *    [引  数]    なし
  344.     *    [戻り値]    ワークアドレス
  345.     *
  346.     *        ( 0)    .dc.l    演奏予定総長さ
  347.     *        ( 4)    .dc.l    演奏された曲の合計長さ
  348.     *
  349.     *     プログラムされて曲の合計と演奏された曲の合計長さを返しま
  350.     *    す。ただし、演奏されていない時は0,0がかえります。演奏中
  351.     *    にプログラムの変更があると数値がおかしくなることがあります
  352.     *    (変更されない)。
  353.     *
  354.     *    [参 考]ランダム演奏時にも、ノーマル時にも有効。
  355.     *        意味がないので、そのうち消えるかも知れないコール
  356.     *        使用禁止 ^^;
  357.     *
  358. */
  359.  
  360. #define    CDC_PLAY(ST,ET)        CDC_CALL(0x10,ST,ET)
  361. /*
  362.     *-----------------------------------------------------------------
  363.     *
  364.     *    int CDC_PLAY( int ST , int ET );
  365.     *
  366.     *    ・曲ナンバー指定によりノーマル演奏開始
  367.     *
  368.     *    [引  数]    ST = 開始曲ナンバー (0ならCDC管理演奏)
  369.     *            ET = 終了曲ナンバー (-1なら最後まで)
  370.     *    [戻り値]    0なら正常終了
  371.     *            マイナスならエラー
  372.     *
  373. */
  374.  
  375. #define    CDC_PAUSE()        CDC_CALL(0x11)
  376. /*
  377.     *-----------------------------------------------------------------
  378.     *
  379.     *    void CDC_PAUSE();
  380.     *
  381.     *    ・CD演奏の一時停止。演奏していない場合何もしない
  382.     *
  383.     *    [引  数]    なし
  384.     *    [戻り値]    なし
  385.     *
  386. */
  387.  
  388. #define    CDC_RESUME()        CDC_CALL(0x12)
  389. /*
  390.     *-----------------------------------------------------------------
  391.     *
  392.     *    void CDC_RESUME();
  393.     *
  394.     *    ・CD演奏の一時停止の解除。演奏中は何もしない
  395.     *
  396.     *    [引  数]    なし
  397.     *    [戻り値]    なし
  398.     *
  399. */
  400.  
  401. #define    CDC_MVPLAY(OFS)        CDC_CALL(0x13,OFS)
  402. /*
  403.     *-----------------------------------------------------------------
  404.     *
  405.     *    int CDC_MVPLAY( int OFS );
  406.     *
  407.     *    ・CD演奏の曲を変える
  408.     *
  409.     *    [引  数]    OFS  = 現在演奏中の曲からの ±値 (-1~1)
  410.     *    [戻り値]    0なら正常終了
  411.     *            マイナスならエラー
  412.     *
  413.     *     0を指定することで演奏中の曲を最初から。プログラムされて
  414.     *    いる場合、プログラム順に曲を移動、演奏します。ランダムモー
  415.     *    ド時は、どの曲にいくか判りません。
  416.     *
  417. */
  418.  
  419. #define    CDC_BGM(T1,T2,T3,T4)        CDC_CALL(0x14,T1,T2,T3,T4)
  420. /*
  421.     *-----------------------------------------------------------------
  422.     *
  423.     *    int CDC_BGM( int T1,int T2,int T3,int T4 );
  424.     *
  425.     *    ・指定アドレス間を繰り返し演奏する(BGMモード演奏)
  426.     *
  427.     *    [引  数]    T1  =  開始トラックor開始アドレス
  428.     *            T2  =  終了アドレス(0ならその曲の最後の数値)
  429.     *            T3  =  ループアドレス(0なら T1 と同じ値に)
  430.     *            T4  =  ループ終了アドレス(0なら T2 と同じ値に)
  431.     *    [戻り値]    0なら正常終了
  432.     *            マイナスならエラー
  433.     *
  434.     *     T1 は 0x100 未満であればトラック指定になります。
  435.     *     T1 が 0x100 以上であればアドレス指定になります。
  436.     *
  437.     *    CDC_MODE() の戻り値に bit4;BGM が立ちます
  438.     *
  439.     *    [参  考] 基本的に BGMとして CD を使う場合のコールなので
  440.     *        LED部にBGMモードとは表示されません。
  441.     *                ZCDC.x で使用してます。
  442.     *
  443. */
  444.  
  445. #define    CDC_STOP()        CDC_CALL(0x15)
  446. /*
  447.     *-----------------------------------------------------------------
  448.     *
  449.     *    void CDC_STOP();
  450.     *
  451.     *    ・CD演奏を停止する
  452.     *
  453.     *    [引  数]    なし
  454.     *    [戻り値]    なし
  455.     *
  456.     *     CDC_INIT() に比べ高速です。割り込み中など処理が止まるのを
  457.     *    避けたい場合のみ使用してください。CDC.x 内部では「停止」に
  458.     *    なりますが、CD-ROM自体の状態は一時停止になっています。また、
  459.     *    LED の書き替えもすぐに行われません。
  460.     *
  461. */
  462.  
  463. #define    PLAYWAIT()        CDC_CALL(0x1D)
  464. /*
  465.     *
  466.     *    ・演奏開始後、ステイタス待ちをする( /PM 使用時対策用)
  467.     *
  468.     *    [引  数]    なし
  469.     *    [戻り値]    なし
  470.     *
  471.     *     /PM 使用時、演奏開始を待たずに次の作業に移ります。が、タ
  472.     *    イミングを取るためにはこれではまずい場合があります(ゲーム
  473.     *    のBGMなど)。その時、これを実行します。演奏開始するまで待ち
  474.     *    ます。
  475.     *     /PM 使用していない場合や、演奏開始状態でない場合は無視さ
  476.     *    れます。
  477.     *
  478. */
  479.  
  480. #define    CDC_VOL(VL)        CDC_CALL(0x1E,VL)
  481. /*
  482.     *-----------------------------------------------------------------
  483.     *
  484.     *    int CDC_VOL( int VL );
  485.     *
  486.     *    ・ボリュームを変更する
  487.     *
  488.     *    [引  数]    VL  = 0~255 ; ボリュームを指定
  489.     *                = -1     ; 現在のボリューム値を返す
  490.     *    [戻り値]    現在のボリューム値
  491.     *            マイナスならエラー(値異常かボリューム非対応)
  492.     *
  493.     *    [参  考] マスターボリュームは CDC_STAT() で確認出来ます。
  494.     *
  495. */
  496.  
  497. #define    CDC_FADEOUT(SW)        CDC_CALL(0x1F,SW)
  498. /*
  499.     *-----------------------------------------------------------------
  500.     *
  501.     *    int CDC_FADEOUT( int SW );
  502.     *
  503.     *    ・演奏をフェードアウトする。
  504.     *
  505.     *    [引  数]    SW   = 0      ; フェードアウト開始
  506.     *                 = 1~255 ; フェードアウトの速度変更
  507.     *                 = -1     ; 現在のフェードアウト速度を返す
  508.     *    [戻り値]    現在のフェードアウト速度
  509.     *             -1 なら フェードアウトが出来ない。
  510.     *             -2 なら 既にフェードアウト始めている。
  511.     *
  512. */
  513.  
  514. #define    CDC_DRIVE()        CDC_CALL(0x30)
  515. /*
  516.     *-----------------------------------------------------------------
  517.     *
  518.     *    void CDC_DRIVE();
  519.     *
  520.     *    ・CDCの心臓を動かす
  521.     *
  522.     *    [引  数]    なし
  523.     *    [戻り値]    なし
  524.     *
  525.     *     TIMER-Cを乗っ取っていると、CDCが動きません。が、直接ある
  526.     *    一定期でこれをコールすれば大丈夫です。
  527.     *
  528.     *    [参 考] MUTERMモード対応にも対応してます。が、使用するこ
  529.     *        とはないでしょう。
  530.     *
  531. */
  532.  
  533. #define    CDC_MODE(MD)        CDC_CALL(0x31,MD)
  534. /*
  535.     *-----------------------------------------------------------------
  536.     *
  537.     *    int CDC_MODE( int MD );
  538.     *
  539.     *    ・CDCの演奏モードを設定(トグル)
  540.     *
  541.     *    [引  数]    MD   = モード
  542.     *                 =  0 ; オート
  543.     *                 =  1 ; リピート
  544.     *                 =  2 ; ランダム
  545.     *                 = -1 ; モードののみ返す
  546.     *    [戻り値]    現在のモード ; 正常終了
  547.     *        現在のモードは
  548.     *                bit0 :オート
  549.     *                bit1 :リピート
  550.     *                bit2 :ランダム
  551.     *                bit3 :メモリー
  552.     *                [bit4 :BGM]
  553.     *
  554.     *     設定は CDC_INKEY でそれぞれのキーコードを、送った時
  555.     *    を同じ処理をします(ただし入力数字は無視されます)ので、場合
  556.     *    により演奏開始されます。
  557.     *
  558.     *     モード変更はトグルで行われるので一度モードを調べてから設
  559.     *    定したほうがいいでしょう。
  560.     *
  561. */
  562.  
  563. #define    CDC_KEYMODE(MD)        CDC_CALL(0x32,MD)
  564. /*
  565.     *-----------------------------------------------------------------
  566.     *
  567.     *    int CDC_KEYMODE( int MD );
  568.     *
  569.     *    ・CDCのキー操作関係のモードを設定
  570.     *
  571.     *    [引  数]    MD = モード
  572.     *                 0 ; 一切受け付けない (-KS)
  573.     *                 1 ; 受け付ける
  574.     *                -1 ; 現在のモードのみ返す
  575.     *    [戻り値]    前のモード ; 正常終了
  576.     *            マイナスならエラー
  577.     *
  578. */
  579.  
  580. #define    CDC_LED(MD)        CDC_CALL(0x33,MD)
  581. /*
  582.     *-----------------------------------------------------------------
  583.     *
  584.     *    int CDC_LED( int MD );
  585.     *
  586.     *    ・CDCのLEDの表示モードを設定する
  587.     *
  588.     *    [引  数]    MD   =  0 ; 非表示モード
  589.     *                    1 ; 表示モード
  590.     *                    2 ; 左部のみ表示モード
  591.     *                 = -1 ; 現在の値
  592.     *    [戻り値]    前のモード ; 正常終了
  593.     *            マイナスならエラー
  594.     *
  595.     *     表示モードにしてもTEXTが使われていると表示されません
  596.     *
  597.     *    [★注意]ver 1.06以前では
  598.     *            [引  数]    MD   =  1 ; 非表示モード
  599.     *                            0 ; 表示モード
  600.     *        でした。。
  601.     *
  602. */
  603.  
  604. #define    CDC_TIMING(TM)        CDC_CALL(0x34,TM)
  605. /*
  606.     *-----------------------------------------------------------------
  607.     *
  608.     *    int    CDC_TIMING( int TM );
  609.     *
  610.     *    ・CDチェックする間隔設定(基本的に使用禁止)
  611.     *
  612.     *    [引  数]    TM   =  1/100s単位
  613.     *                 = -1 ; 現在の値
  614.     *    [戻り値]    前の値(単位1/100s) ; 正常終了
  615.     *            マイナスならエラー
  616.     *
  617.     *     間隔チェックには IOCS の TIMER-C のワークを見ているので
  618.     *    TIMER-C を変更している場合、意味がありません。
  619.     *
  620. */
  621.  
  622. #define    CDC_POWER(MD)        CDC_CALL(0x35,MD)
  623. /*
  624.     *-----------------------------------------------------------------
  625.     *
  626.     *    int CDC_POWER( int MD );
  627.     *
  628.     *    ・CDC の機能を制御
  629.     *
  630.     *    [引  数]    MD   =  1 ; 機能する
  631.     *                 =  0 ; 停止する ([ESC])
  632.     *                 = -1 ; 現在の値
  633.     *    [戻り値]    前の値 ; 正常終了
  634.     *            マイナスならエラー
  635.     *
  636.     *     機能を停止しても trap #5 での操作も可能ですが、CDC_DRIVE()
  637.     *    を常用する必要があります。
  638.     *
  639. */
  640.  
  641. #define    CDC_TRACKMODE(MD)    CDC_CALL(0x36,MD)
  642. /*
  643.     *-----------------------------------------------------------------
  644.     *
  645.     *    void CDC_TRACKMODE( int MD );
  646.     *
  647.     *    ・トラック記憶モードを変える(演奏も停止します)。
  648.     *
  649.     *    [引  数]    MD   =  0 ; タイトルリストファイルを参照、
  650.     *                 拡張トラック設定
  651.     *                 =  1 ; 拡張トラック設定解除
  652.     *    [戻り値]    なし
  653.     *
  654.     *     タイトルリストファイルからの登録を行います。タイトルリス
  655.     *    トファイルを変更した時これを実行すれば読み込んでくれます。
  656.     *
  657.     *     ジュークボックスモード時は使用禁止です、
  658.     *
  659.     *    [参 考] MD == 1 は主にZCDC.xで使用します。普通の音楽演奏の
  660.     *        場合は意味がないでしょう。
  661.     *
  662. */
  663.  
  664. #define    CDC_KEYCANSEL(NK)    CDC_CALL(0x37,NK)
  665. /*
  666.     *-----------------------------------------------------------------
  667.     *
  668.     *    void CDC_KEYCANSEL( int NK );
  669.     *
  670.     *    ・CDCのキー操作無効を個別に設定
  671.     *
  672.     *    [引  数]    NK   = 無効にするキーボードコード
  673.     *                 = -1 ; 全てもとに戻す
  674.     *    [戻り値]    なし
  675.     *
  676.     *     アプリでキーボードからのコントロールが困る物がある場合、
  677.     *    特定のキーのみ無効に出来ます。アプリ終了時もとに戻すこと。
  678.     *
  679.     *    [参 考] スイッチ -B[n]でも、もとに戻すことが出来ます。
  680.     *
  681. */
  682.  
  683. #define    CDC_TIMELED(MD)        CDC_CALL(0x38,MD)
  684. /*
  685.     *-----------------------------------------------------------------
  686.     *
  687.     *    int CDC_TIMELED( int MD );
  688.     *
  689.     *    ・CDCのTIMEのLEDの表示モードを設定する
  690.     *
  691.     *    [引  数]    MD   =  0 ; ノーマル
  692.     *                    1 ; リバース
  693.     *                    2 ; トータル
  694.     *                    3 ; トータルリバース
  695.     *                 = -1 ; 現在の値
  696.     *    [戻り値]    前のモード ; 正常終了
  697.     *            マイナスならエラー
  698.     *
  699. */
  700.  
  701. #define    CDC_LEDXY()        CDC_CALL(0x39)
  702. /*
  703.     *-----------------------------------------------------------------
  704.     *
  705.     *    int CDC_LEDXY();
  706.     *
  707.     *    ・CDCのLEDの座標を得る
  708.     *
  709.     *    [引  数]    なし
  710.     *    [戻り値]     X座標 * 0x10000 + Y座標
  711.     *
  712.     *    [★注意]ver 1.08以降新規です。
  713.     *
  714. */
  715.  
  716. #define    CDC_SCSIID()        CDC_CALL(0x3a)
  717. /*
  718.     *-----------------------------------------------------------------
  719.     *
  720.     *    int    CDC_SCSIID();
  721.     *
  722.     *    ・CDCの管理しているSCSI-ID(LUN)を得る
  723.     *
  724.     *    [引  数]    なし
  725.     *    [戻り値]    LUN * 0x10000 + ID
  726.     *
  727.     *     LUN は 0~7 であって、トレイ(1~ )とはずれているので注意
  728.     *
  729.     *    [★注意]ver 1.09以降新規です。
  730.     *
  731.  
  732. */
  733.  
  734. #define    CDC_EJEEMU()        CDC_CALL(0x3b)
  735. /*
  736.     *-----------------------------------------------------------------
  737.     *
  738.     *    void CDC_EJEEMU();
  739.     *
  740.     *    ・CDCの管理しているSCSI機器が一度エジェクトされた事にする
  741.     *
  742.     *    [引  数]    なし
  743.     *    [戻り値]    なし
  744.     *
  745.     *    [★注意]ver 1.09以降新規です。
  746.     *
  747. */
  748.  
  749. #define    CDC_CHGLUN(LN)        CDC_CALL(0x3c,LN)
  750. /*
  751.     *-----------------------------------------------------------------
  752.     *
  753.     *    int CDC_CHGLUN( int LN );
  754.     *
  755.     *    ・LUNを切り換える
  756.     *
  757.     *    [引  数]    LN   =  LUN (0~7)
  758.     *                 = -1 ; 現在の値
  759.     *    [戻り値]    = LUN (0~7) ; 正常終了
  760.     *            = 100 ; ジュークボックスモード
  761.     *            マイナスならエラー
  762.     *
  763.     *     LUNを切り換えます。切り換えたと同時にタイトルリストファ
  764.     *    イルからの登録も行います。
  765.     *
  766.     *    [★注意]ver 1.09以降新規です。
  767.     *
  768. */
  769.  
  770. /*
  771. *-------------------------------------------------------------------------
  772. *
  773. *    CDC ERROR CORDS
  774. *
  775. *
  776. * -1    ; 
  777. * -2    ; Play Audio Begin ・ Play Audio Block Count Command error'演奏できない'
  778. * -3    ; Start Track Address or ReadTOC Command error'演奏できない'
  779. * -4    ; 指定された曲番号は、存在しない
  780. * -5    ; Leadout Track Address or ReadTOC Command error
  781. * -100    ; CD-ROM でない 準備されていない
  782. *
  783. *
  784. *    戻り値としてd0が使われていなくても破壊されます.
  785. *
  786. *
  787. *-------------------------------------------------------------------------
  788. *
  789. *    CDC バージョンの差
  790. *
  791. *
  792. *    以下のコールは_CDC_VERSIONで得られる数値の$107未満と以降では引数等に違
  793. *    ってしまっています。ご注意下さい。
  794. *
  795. *        CDC_INKEY();
  796. *        CDC_LED();
  797. *
  798. *    以下のコールは_CDC_VERSIONで得られる数値の$108以降新規です。
  799. *
  800. *        CDC_LEDXY();
  801. *
  802. *    以下のコールは_CDC_VERSIONで得られる数値の$109以降新規です。
  803. *
  804. *        CDC_SCSIID();
  805. *        CDC_EJEEMU();
  806. *        CDC_CHGLUN();
  807. *        CDC_VOL();
  808. *        CDC_FADEOUT();
  809. *
  810. *
  811. */
  812.